Many different types of computing systems have attained widespread use around the world. These computing systems include personal computers, servers, mainframes, work stations, and a wide variety of stand-alone and embedded computing devices. Sprawling client-server systems exist, with applications and information spread across many PC networks, mainframes and minicomputers. In a distributed system connected by networks, a user may access many application programs, databases, network systems, operating systems and mainframe applications. Computers provide individuals and businesses with a host of software applications including word processing, spreadsheet, web-publishing, databases, and accounting. Further, networks enable high speed communication between people in diverse locations by way of e-mail, websites, instant messaging, and web-conferencing.
At the heart of every computer, server, workstation and mainframe is a microprocessor. A common architecture for high performance, single-chip microprocessors is the reduced instruction set computer (RISC) architecture characterized by a small simplified set of frequently used instructions for rapid execution. Thus, in a RISC architecture, a complex instruction comprises a small set of simple instructions that are executed in steps very rapidly. These steps are performed in execution units adapted to execute specific simple instructions. In a superscalar architecture, these execution units typically comprise load/store units, integer Arithmetic/Logic Units, floating point Arithmetic/Logic Units, and Graphical Logic Units that operate in parallel. In a processor architecture, an operating system controls operation of the processor and components peripheral to the processor. Executable application programs are stored in a computer's hard drive. The computer's processor causes application programs to run in response to user inputs.
In a typical configuration, computers connect by way of network servers to other computers in a network. The servers facilitate communications between the computers. One example of a network is the Internet which comprises servers serving a great number of computers. Each computer has an Internet Browser to access the servers. In a typical browser session, a user may address different websites, select different links, download information, upload information, etc. Clearly, this activity puts a load on the servers that serve the multitude of users accessing the servers.
One cannot easily predict how many servers are necessary to handle a particular load of computers accessing the servers. To determine performance, a load test may be performed. IBM Rational Performance Tester and competing tools emulate the workload generated by thousands of users accessing the servers. To do this, multiple client-server sessions are generated to emulate user interactions with the server system under test. Each session emulates a client interaction with the system using a plurality of different protocols including, without limitation, Hyper-Text Transfer Protocol, (HTTP), which is a method used to convey information on the World Wide Web. An example of an emulated interaction is to send an initial HTTP request and process the HTTP results that are returned.
An object of a load test is to determine how many users a server system can serve simultaneously without encountering a response time which is deemed to be too slow. One load test machine alone does not always have the capacity to handle the concurrent throughput rate of the many emulated requests that may be needed in a load test. Thus, in current implementations the load is distributed over a plurality of load test machines. Each of the plurality of load test machines is an agent of a workbench computer which controls the load test machines. The workbench computer enables the test designer to specify the number and type of load test machines and to specify the number of users emulated by each. A problem arises that the test designer doesn't have precise information about how many users can be emulated by a load test machine without exceeding process limits. Thus, currently the user must use guess work and intuition.
What is needed is a method for collecting and providing historical machine usage data that will inform a test designer concerning the number and type of load test machines to be employed for a load test and how many users will be emulated by each machine.